//
//  ZJComposeTextView.swift
//  Webo
//
//  Created by 曾静 on 16/7/3.
//  Copyright © 2016年 qq. All rights reserved.
//

import UIKit
@IBDesignable
//UITextView自适应向下面移动64
class ZJComposeTextView: UITextView {

    //一般是父控件与自己的属性赋值一样时才重写属性
    //添加属性,由于父控件并没拥有属性,所以不需要重写父控件的属性,只是简单的为其添加属性

    var placeholder:String?{
        
        
    
        didSet{
            
            desLabel.text = placeholder
        }
    }
    
    
    //添加属性,由于父控件已经拥有属性,所以需要重写父控件的属性
   override var font:UIFont?{
    
    //如果不传值就是用系统的默认值
        didSet{
            
        if font == nil{
            return
        }

            
            desLabel.font = font
        }
   }
    
//  override  var text:String?{
//    
//        didSet{
//            
//             desLabel.hidden = !hasText()
//        }
//    }
//    //一般父控件的属性与子控件 的属性相同的时候重写
//
//    override var textColor:UIColor?{
//        
//        didSet{
//            desLabel.textColor = textColor
//        }
//    }
    
    override init(frame: CGRect, textContainer: NSTextContainer?) {
        super.init(frame: frame, textContainer: textContainer)
       
        setupUI()
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    // MARK: -  设置视图
    private func setupUI(){
        
//        backgroundColor = RandomColor()
        
        //添加控件
        addSubview(desLabel)
        
       
        
        //添加约束,
        desLabel.snp_makeConstraints { (make) -> Void in
            
               make.leading.equalTo(self).offset(5)
    
               make.top.equalTo(self).offset(8)
            
               make.width.equalTo(SCREENW-10)
        }
        
       
        
        //设置通知监听textView的的
        NSNotificationCenter.defaultCenter().addObserver(self, selector: "TextViewTextDidChange", name: UITextViewTextDidChangeNotification, object: nil)
        
    }
    func TextViewTextDidChange(){
        
        
        desLabel.hidden = self.hasText()
    }
    
    
    //记得移除通知
    deinit{
        NSNotificationCenter.defaultCenter().removeObserver(self)
    }
    //虽然设置为public的属性可以在外面的textView的代理方法里面设置其显示和隐藏,但是我们考虑到控件的封装性,我们写在自定义控件的内部,通过通知的形式
    
    //懒加载控件
    private lazy var desLabel:UILabel = {
        
        let lab = UILabel()
        
        lab.textColor = UIColor.grayColor()
        
        lab.font = UIFont.systemFontOfSize(12)
        
        lab.text = "我同桌又骂人了我同桌又骂人了我同桌又骂人了我同桌又骂人了我同桌又骂人了我同桌又骂人了我同桌又骂人了我同桌又骂人了"
        
        lab.numberOfLines = 0
        
        return lab
        
    }()
    
    


}
